package org.osiris.persistence.controllers;

import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;

import org.osiris.persistence.Requisito;
import org.osiris.persistence.controllers.exceptions.IllegalOrphanException;
import org.osiris.persistence.controllers.exceptions.NonexistentEntityException;
import org.osiris.persistence.controllers.exceptions.PreexistingEntityException;

public interface RequisitoInterface {

	public abstract EntityManager getEntityManager();

	public abstract List<Requisito> buscarRequisitos(String autor,
			String descripcion, String detallerequisito, Date fechaalta,
			Date fechabaja, Long idComplejidadRequisito,
			Long idEstadoRequisito, Long idRequisito, Long idSubcategoria,
			Long idTipoRequisito, String nombre, Integer PuntosFuncion,
			String referencia, String responsable, String origen,Long proyecto,
			Long requisito_relacionado,boolean dependencia);

	public abstract void create(Requisito requisito)
			throws PreexistingEntityException, Exception;

	public abstract void edit(Requisito requisito)
			throws IllegalOrphanException, NonexistentEntityException,
			Exception;

	public abstract void destroy(Long id) throws IllegalOrphanException,
			NonexistentEntityException;

	public abstract List<Requisito> findRequisitoEntities();

	public abstract List<Requisito> findRequisitoEntities(int maxResults,
			int firstResult);

	public abstract Requisito findRequisito(Long id);

	public abstract int getRequisitoCount();

}